package cn.ly.sort.select;

public class ArraySel {
	
	private int[] a;
	private int nElems;
	
	public ArraySel(int size){
		a = new int[size];
		this.nElems = 0;
	}
	
	public void insert(int value){
		a[this.nElems] = value;
		this.nElems++;
	}
	
	public void display(){
		for(int i=0; i < this.nElems; i++){
			System.out.print(a[i] + " ");
		}
		System.out.println();
	}
	
	public void sort(){
		int minMark = 0;
		for(int i=0; i < this.nElems-1; i++){              //最后一个，只剩下自己，不比较，例：如果数组只有两个元素则比较n-1=2-1=1次
			minMark = i;
			for(int j=i+1; j < this.nElems; j++){          //for( j=0+1; j < 2; i++) 循环一次，所以内层是n
				if(a[j] < a[minMark]){                     //选择排序就是只记录最小数的下标，但是不交换，在查找全部完毕后再交换
					minMark = j;
				}
			}
			swap(i,minMark);
		}
	}
	
	private void swap(int i,int j){
		/*a[i] = a[i]^a[j];
		a[j] = a[i]^a[j];
		a[i] = a[i]^a[j];*/   //由于用 ^ 的形式交换连个数据，如果是自己和自己做 ^ 计算 结果为0，所以选择排序不能中 ^的计算方式 做交换
		int temp = 0;
		temp = a[i];
		a[i] = a[j];
		a[j] = temp;
		
	}
	
	public static void main(String[] args) {
		int a = 40;
		int b = 40;
		a = a^b;
		b = a^b;
		a = a^b;
		System.out.println(0^0);
		System.out.println("张".toCharArray()[0]);
	}

}
